/*
 * TraceValue.h
 *
 *  Created on: 2012/08/06
 *      Author: guanxiaoying
 */

#ifndef TRACEVALUE_H_
#define TRACEVALUE_H_

#define TRVALUE_NORMAL 0
#define TRVALUE_INF 1
#define TRVALUE_NAN 2

VOID Tr_ValueMinus( TRVALUE *stValue1, TRVALUE *stResult );
VOID Tr_ValueAbs( TRVALUE *stValue1, TRVALUE *stResult );
BOOL Tr_ValueIsNegative( TRVALUE *stResult );
BOOL Tr_ValueIsPositive( TRVALUE *stResult );
BOOL Tr_ValueIsZero( TRVALUE *stResult );
BOOL Tr_ValueIsFloating( TRVALUE *stResult );
VOID Tr_ValueInc( TRVALUE *stValue1, TRVALUE *stResult );
/* A--*/
VOID Tr_ValueDec( TRVALUE *stValue1, TRVALUE *stResult );
VOID Tr_ValueAdd( TRVALUE *stValue1, TRVALUE *stValue2, TRVALUE *stResult );
VOID Tr_ValueSub( TRVALUE *stValue1, TRVALUE *stValue2, TRVALUE *stResult );
VOID Tr_ValueMul( TRVALUE *stValue1, TRVALUE *stValue2, TRVALUE *stResult );
VOID Tr_ValueDiv( TRVALUE *stValue1, TRVALUE *stValue2, TRVALUE *stResult );
VOID Tr_ValueMod( TRVALUE *stValue1, TRVALUE *stValue2, TRVALUE *stResult );
VOID Tr_ValueNewZero( TRVALUE *stResult, BOOL bFloating );
VOID Tr_ValueNewOne( TRVALUE *stResult, BOOL bFloating );
VOID Tr_ValueNewS1Max( TRVALUE *stResult );
VOID Tr_ValueNewS1Min( TRVALUE *stResult );
VOID Tr_ValueNewS2Max( TRVALUE *stResult );
VOID Tr_ValueNewS2Min( TRVALUE *stResult );
VOID Tr_ValueNewS4Max( TRVALUE *stResult );
VOID Tr_ValueNewS4Min( TRVALUE *stResult );
VOID Tr_ValueNewS8Max( TRVALUE *stResult );
VOID Tr_ValueNewS8Min( TRVALUE *stResult );
VOID Tr_ValueNewU1Max( TRVALUE *stResult );
VOID Tr_ValueNewU2Max( TRVALUE *stResult );
VOID Tr_ValueNewU4Max( TRVALUE *stResult );
VOID Tr_ValueNewU8Max( TRVALUE *stResult );
VOID Tr_ValueNewDoubleMin( TRVALUE *stResult );
VOID Tr_ValueNewDoubleMax( TRVALUE *stResult );
VOID Tr_ValueNewFloatMin( TRVALUE *stResult );
VOID Tr_ValueNewFloatMax( TRVALUE *stResult );
VOID Tr_ValueNewFloating( DOUBLE floating, TRVALUE *stResult );
VOID Tr_ValueNewInteger( INTVALUE value, TRVALUE *stResult );
BOOL Tr_ValueIsNormal( TRVALUE *stResult );
BOOL Tr_ValueLessThan( TRVALUE *st1, TRVALUE *st2 );
BOOL Tr_ValueLessOrEqual( TRVALUE *st1, TRVALUE *st2 );
BOOL Tr_ValueEqual( TRVALUE *st1, TRVALUE *st2 );
VOID Tr_ValueAdjust( TRVALUE *st1, U2 size, BOOL sign, BOOL bFloating );
VOID Tr_ValueAdjust2Bit( TRVALUE *st1, U2 size, BOOL sign );
#endif /* TRACEVALUE_H_ */
